perm filename CLEFXG.F4[NEW,LCS]8 blob
sn#396932 filedate 1978-11-16 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 SUBROUTINE CLEFS
C00012 ENDMK
C⊗;
SUBROUTINE CLEFS
COMMON /LIB/ KPNT1(10),K1,KPNT2(10),K2,KPNT3(10),K3,KPNT4(10),
1 K4,KPNT5(10),K5,KPNT6(10),K6,KPNT7(10),K7,KPNT8(10),K8,
1 JCLF1(350),JCLF2(350),JCLF3(350),JCLF4(350),
1 JCLF5(350),JCLF6(350),JCLF7(350),JCLF8(350),
1 NMX(1),NM2,NM3,NM4,NM5,NM6,NM7,NM8
DIMENSION RCMIN(4),CM(4)
COMMON /STF/RSTFAC(8),RSTJ2 /PLTR/IPLT,RHT,DIS,XDIS/BM/F,G,H
COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /MIN/MINI,RMINI
DATA RCMIN/3.3,10.5,7.0,10.5/,CM/.1,1.5,1.1,1.5/
EQUIVALENCE (R4,RJQ(2)),(J4,JQ(2)),(J5,JQ(3)),(J9,JQ(7)),
1 (R6,RJQ(4)),(R5,RJQ(3)),(R8,RJQ(6)),(R7,RJQ(5))
1,(DEG,R9,RJQ(7)),(NJR,RJQ(8)),(R3,RJQ(1)),(J8,JQ(6))
CX J5=MOD(J5,100)
CX IF(J5)J5=-J5
IF(R6.GE.100)R6=R6-100
C SOMETIMES MAKE SIZE +100 FOR PARTS PROGRAM.
CALL NOZERO(R6)
IF(R7.EQ.0)R7=R6
C IF P7 = 0, IT WILL EQUAL P6.
IF(JA.GT.10)GO TO 9
NAME='CLEFA'
IF(J5.LT.20)GO TO 4
R6=R6*.3
C SIZE FACTORS FOR SPECIAL WORDS, ETC. (PPP, MF, CRESC. ETC.)
R7=R7*.3
GO TO 4
9 IF(NAME.EQ.NJR)GO TO 4
IF(NAME.EQ.0)GO TO 177
IF(NJR.EQ.0)GO TO 4
177 IF(NJR.EQ.0)GO TO 8
C TO PICK UP BASIC DRAW NAME FROM P10
NAME=NJR
GO TO 4
8 TYPE 5
5 FORMAT(' SET P10=1'/)
C LEADS TO PROPER FILE CALL
4 JTAIL=-1
IF(JA.NE.3)GO TO 44
IF(R5.NE.0.8)GO TO 44
JTAIL=0
C R5=0.8 FOR TREBLE CLEF WITH 8 ON TAIL. (FOR TENOR VOCAL)
44 NM=NAME+2*(J5/10)
C DRAW0 HAS ITEMS 0→9; DRAW1, 10→19; ETC. TO DRAW9, 90→99
JEZ=MOD(J5,10)+1
2 DO 200 K=1,8
200 IF(NMX(K).EQ.NM)GO TO 30
C SET P10≠0 TO CHANGE BASIC 'DRAW' NAME.
C JUMP IF ALREADY IN CORE
NPP=0
IF(JA.NE.11)GO TO 1111
C DOESN'T CHECK LOOKUP ON CLEFS AND ALPHA'S.
NPP=-1
IF(LOOKF(NM))GO TO 1111
TYPE 1112,NM
RETURN
1112 FORMAT(1XA5,' -- NOT FOUND')
KX=0
1111 CALL GETFI2(NM,NPP)
GO TO(33,233,333,433,533,633,733),KX
C GOES TO 133 WHEN KX IS 0
133 CALL FASTI2(KPNT1,11)
CALL FASTI2(JCLF1,K1)
C NEW DATA READER 6/74 -- 5/75 HOLDS 3 .DMD FILES IF THEY FIT.
IF(K1.LE.350)GO TO 300
C??? KX=0
C??? NM2=0
C??? GO TO 30
GO TO 300
33 CALL FASTI2(KPNT2,11)
IF(K2.GT.350)GO TO 1112
C JUMP BACK IF IT WON'T FIT.
CALL FASTI2(JCLF2,K2)
GO TO 300
233 CALL FASTI2(KPNT3,11)
IF(K3.GT.350)GO TO 1112
C JUMP BACK IF IT WON'T FIT.
CALL FASTI2(JCLF3,K3)
C R6 IS SIZE FACTOR
GO TO 300
333 CALL FASTI2(KPNT4,11)
IF(K4.GT.350)GO TO 1112
C JUMP BACK IF IT WON'T FIT.
CALL FASTI2(JCLF4,K4)
GO TO 300
433 CALL FASTI2(KPNT5,11)
IF(K5.GT.350)GO TO 1112
C JUMP BACK IF IT WON'T FIT.
CALL FASTI2(JCLF5,K5)
GO TO 300
533 CALL FASTI2(KPNT6,11)
IF(K6.GT.350)GO TO 1112
C JUMP BACK IF IT WON'T FIT.
CALL FASTI2(JCLF6,K6)
GO TO 300
633 CALL FASTI2(KPNT7,11)
IF(K7.GT.350)GO TO 1112
C JUMP BACK IF IT WON'T FIT.
CALL FASTI2(JCLF7,K7)
300 KX=KX+1
NMX(KX)=NM
GO TO 30
733 CALL FASTI2(KPNT8,11)
IF(K8.GT.350)GO TO 1112
C JUMP BACK IF IT WON'T FIT.
CALL FASTI2(JCLF8,K8)
KX=0
C RESET POINTER TO FIRST SLOT (NMX(1) )
NMX(8)=NM
30 IF(J5.GT.3)GO TO 811
IF(JA.NE.3)GO TO 811
C 0=TREB, 1=BASS, 2=ALTO, 3=TENOR(ALTO SHIFTED UP) MINI→R4+100
C ↑↑↑↑↑↑↑↑ FIXUP SOMEDAY IN .DMD FILES
IF(IABS(J4).LT.80)GO TO 812
RSTJ2=.8*RSTJ2
C TO SET HGT. OF MINI CLEFS
R4=R4+CM(JEZ)
C SHIFTS MINIS UP BECAUSE OF WRONG ORIG. POS.??
812 IF(JEZ.NE.4)GO TO 811
R4=R4+2
JEZ=3
C ABOVE IS NOW AT TOP
811 A=R4
R4=A+2.9
C ADJUSTS HEIGHT(??)
CALL CENTX
R4=A
DO 201 K=1,8
201 IF(NM.EQ.NMX(K))L=KPNT1(JEZ+(K-1)*11)+350*(K-1)
C ABOVE SETS POINTER TO LIBRARY STORAGE ARRAY.
IF(L.LE.0)RETURN
C CATCHES IMPOSSIBLE NUMBERS (I HOPE!)
IF(J9.EQ.0)GO TO 31
C***** ROTATE *******
R7=R7*RSTJ2
R6=R6*RSTJ2
N=JCLF1(L)
KNT=701
C ROTATED DATA IS PUT STARTING AT LOCATION 701.(AREA FOR NM3)******
JCLF1(KNT)=N
DO 1 K=L+1,N+L-1
CALL UNPACK(J,M,JCLF1(K))
X=J*R6
Y=M*R7
JJ=JCLF1(K)/100000000
AX=ATAN2(X,Y)*57.29578
HYP=SQRT(X**2+Y**2)
ROT=DEG+AX
J=ROFF(HYP*COSD(ROT))
M=ROFF(HYP*SIND(ROT))
KNT=KNT+1
IF(J)J=1000-J
IF(M)M=1000-M
1 JCLF1(KNT)=M*10000+J+JJ*100000000
L=701
C *********** SEE AT TOP **********
R6=1.
R7=1.
RSTJ2=1.
C SIZE CHANGES MUST BE MADE BEFORE ROTATION!!!!! ELSE IT DISTORTS.
NM3=0
C WIPES OUT DATA AREA FOR NM3
C R9=P9=DEGREES OF ROTATION (0-360)
IF(KK.GT.350)KX=0
C CHECK TO SEE IF DATA WAS WIPED OUT.
31 A=-1
C FLAG FOR THICKNESS OR NO.
IF(J8.EQ.-2)GO TO 32
IF(R8.LE.0)GO TO 34
A=0
C NEXT J8 = 1→99 =X THICKNESS, =100→ = Y THICKNESS
CALL THICK
C SEE CLEFZ.F4 FOR "THICK" CODE (THICK IS IN MFAIL.FAI)
GO TO 32
CC34 IF(IPLT)GO TO 77
CC31 IF(R8.EQ.-2)GO TO 32
C R8=-2 OMITS FILLER DURING PLOT
CCC IF(IPLT)GO TO 77
34 IF(IPLT)77,77,32
CCCC IF(R8.NE.-1)GO TO 32
77 DO 3 K=L+1,JCLF1(L)+L
IF(JCLF1(K).LT.200000000)GO TO 3
JEZ=JCLF1(L)-1
IF(K.GT.L+1)JEZ=JEZ-K+L+1
CALL FILLMS(JEZ,JCLF1(K),R3,CENTR,R6,R7)
GO TO 32
3 CONTINUE
C FILLS ONLY WHEN PLOTING OR R8=-1
32 CALL JDRAW(JCLF1(L),R3,CENTR,RSTJ2,R6,R7)
C 3,POS.,STF,NT# OR CLEF,ITEM#,SIZEX,SIZEY, R8=-1 TO FILL ON CRT
IF(A)GO TO 334
IF(J8.NE.0)GO TO 234
IF(J9.EQ.0)GO TO 334
GO TO 134
234 J8=J8-1
R3=R3+XDIS
C XDIS=1 PLOTTER STEP NO MATTER WHAT SIZE FACTOR USED
134 IF(J9.EQ.0)GO TO 32
J9=J9-1
CENTR=CENTR+XDIS
GO TO 32
334 IF(JTAIL)RETURN
JTAIL=-1
JA=10
JEZ=9
C JEZ=9 MAKES AN 8 APPEAR UNDER TAIL OF TREBLE CLEF.
R6=.2
R7=R6
NM='BDR40'
R3=R3+14*RSTJ2
R4=-4
GO TO 2
END